Casper CBC: message and block identity
I hear you. I am wanting to more so simulate sha3(rlp(blockHeader)), where the blockheader includes sender, estimate, justifications. I forgot to include the estimate in my proposal above. Barring transactions (and some merkle root), I think those three things are what we need to ensure a uniq hash. We should add something like the justifications need to be sorted to prevent worrying about set inclusion. Or we could put them in a merkle tree and just include the root. Not sure what you're getting at between __hash__ and blockhash. Let's chat about all this briefly after the casper standup today
blockHeader includes sender, estimate, justifications.
message hash is like sha3(rlp(blockHeader) or markle root.
On the implementation side, the same set of goals is addressed in quite different way. Blocks are going to be pieces of data (so, encoded as byte arrays) exchanged between nodes. For having identity and immutability that cannot be tampered, we have digest functions and public-key cryptography. A side effect of this is that each block must include a digest (=hash) or its body and this hash can be used as block id. Also, this hash gives us a total ordering of blocks by lexicographic sorting of hashes. In this approach we of course ignore the fact, that collisions of hashes exist - by naive assumption that such a collision will never happen in practice.